package com.delio.server.produccion.detallenotaingresos;

import java.sql.SQLException;
import java.util.List;

import com.delio.client.produccion.detallenotaingresos.DetalleNotaIngreso;
import com.delio.client.produccion.detallenotaingresos.DetalleNotaIngresoService;
import com.delio.server.base.Conexion;
import com.delio.server.base.util.GxtGridPaginate;

import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.ibatis.sqlmap.client.SqlMapClient;

public class DetalleNotaIngresoServiceImpl extends RemoteServiceServlet
implements DetalleNotaIngresoService{

	private static final long serialVersionUID = 1L;
	static SqlMapClient sqlMap = Conexion.getSqlMap();

	@SuppressWarnings("unchecked")
	@Override
	public PagingLoadResult<DetalleNotaIngreso> paginateDetalleNotaIngreso(
			FilterPagingLoadConfig config,Integer id) {
		GxtGridPaginate paginate = new GxtGridPaginate();
	    paginate.config = config;
		paginate.setLimit();
		if(paginate.order.equals("")){
			paginate.order = " order by id desc";
		}
		paginate.condition += " and notaingreso_id = "+id;
	 	List<DetalleNotaIngreso> data = null;
		try {
			data = sqlMap.queryForList("paginateDetalleNotaIngreso", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return new BasePagingLoadResult<DetalleNotaIngreso>(data, paginate.offset, count(paginate));
	}

	public Integer count(GxtGridPaginate paginate){
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countDetalleNotaIngreso", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}

	@Override
	public boolean guardar(DetalleNotaIngreso dni) {
		boolean var = false;
		try{
			//dp.setCodigo(getNumeracion());
			sqlMap.insert("insertDetalleNotaIngreso",dni);
			var = true;
	    }catch(Exception e){
	    	e.printStackTrace();
	    }
	  return var;
	}
	
	@Override
	public boolean actualizar(DetalleNotaIngreso dni) {
		boolean var = false;
		
		try{
		   //dp.setCodigo(getNumeracion(dp.getCodigo()));
		   sqlMap.update("updateDetalleNotaIngreso",dni);	
		   var = true;	
		}catch(Exception e){
			e.printStackTrace();
		}
		return var;
	}
	
/*	private  static String getNumeracion(){
		Series.sqlMap = sqlMap;
		return Series.actualizarNumeracion("numerodetallepedido");
	}
	
	private static String getNumeracion(String codigoedit){
		Series.sqlMap = sqlMap;
		Series.ultimonumero = codigoedit;		
		return Series.actualizarNumeracion("numerodetallepedido");
	}*/

	@SuppressWarnings("unchecked")
	@Override
	public List<DetalleNotaIngreso> ListarDetalleNotaIngresos() {
		List<DetalleNotaIngreso> ldni = null;
		try{
			ldni = sqlMap.queryForList("ListDetalleNotaIngreso");			
		}catch(Exception e){
			e.printStackTrace();
		}
		return ldni;
	}

	public boolean eliminar(Integer id) {
		boolean var = false;
		try{
			sqlMap.delete("deleteDetalleNotaIngreso",id);
			var = true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return var;
	}


	@SuppressWarnings("unchecked")
	@Override
	public List<DetalleNotaIngreso> ListarDetalleNotaIngresos(Integer id) {
		List<DetalleNotaIngreso> ldni = null;
		try{
			ldni = sqlMap.queryForList("ListDetalleNotaIngreso",id);			
		}catch(Exception e){
			e.printStackTrace();
		}
		return ldni;
	}
}
